/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.web.managedbeans;

import cl.bussines.ejbs.AreaTrabajoFacade;
import cl.bussines.entities.AreaTrabajo;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.log4j.Logger;

/**
 *
 * @author Vogel
 */
@ManagedBean(name="areaMBean")
@SessionScoped
public class AreaMBean extends BaseMBean{

    private static final String VISTA_LISTAR_CREAR = "areas";
    
    private List<AreaTrabajo> areas;
    @EJB
    private cl.bussines.ejbs.AreaTrabajoFacade ejbFacade;
    private static Logger LOG = Logger.getLogger(AreaMBean.class);
    private AreaTrabajo area = new AreaTrabajo(0); 
    
    public String init(){
        return VISTA_LISTAR_CREAR;
    }
    
    public String limpiar(){
        this.area=new AreaTrabajo(0);
        return VISTA_LISTAR_CREAR;
    }
    
    public String guardar(){
        try{
            //SE EDITA AREA
            if(this.area.getAreaTrabajo() != null && !this.area.getAreaTrabajo().trim().equals("")){
                if(this.area.getIdAreaTrabajo()!=0){
                    LOG.info("START::EDITAR::");
                    ejbFacade.edit(area);
                    message(FacesMessage.SEVERITY_INFO,"Area editada correctamente.");
                    this.area=new AreaTrabajo(0);
                }else{
                    if(this.area.getIdAreaTrabajo()== null) this.area.setIdAreaTrabajo(0);
                    LOG.info("START::CREATE::");
                    ejbFacade.create(area);
                    message(FacesMessage.SEVERITY_INFO,"Ha sido creada correctamente.");
                    this.area= new AreaTrabajo(0);
                }
                areas.clear();
            }
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al guardar cambios.");
        }
        return VISTA_LISTAR_CREAR;
    }
    
    public String delete(){
        try{
            int codigo = Integer.parseInt(getParam("codigo"));
            String index = getParam("index");

            LOG.info("Codigo del area a editar ["+codigo+"]");
            LOG.info("Index de la tabla ["+index+"]");
            LOG.info("areas size ["+areas.size()+"]");
            for(AreaTrabajo car : areas){ 
                if(car.getIdAreaTrabajo()==codigo){
                    LOG.info("Entro a setear el cargo;");
                    this.area = car;
                }
            }
            if(area != null && area.getIdAreaTrabajo()!=0){
                LOG.info("START::DELETE::");
                ejbFacade.remove(area);
                message(FacesMessage.SEVERITY_INFO,"Ha eliminado correctamente.");
            }
            this.area=new AreaTrabajo(0);
            areas.clear();
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al eliminar area.");
        }
        return VISTA_LISTAR_CREAR;
    }
    
    public String volver(){
        return init();
    }

    public String irEditar(){
        int codigo = Integer.parseInt(getParam("codigo"));
        String index = getParam("index");
        
        LOG.info("Codigo del area a editar ["+codigo+"]");
        LOG.info("Index de la tabla ["+index+"]");
        LOG.info("areas size ["+areas.size()+"]");
        for(AreaTrabajo car : areas){ 
            if(car.getIdAreaTrabajo()==codigo){
                LOG.info("Entro a setear el area;");
                this.area = car;
            }
        }
        LOG.info(area);
        return VISTA_LISTAR_CREAR;
    }

    public List<AreaTrabajo> getAreas() {
         if(areas == null || areas.isEmpty()){
            areas = getEjbFacade().findAll();
        }
        return areas;
    }

    public void setAreas(List<AreaTrabajo> areas) {
        this.areas = areas;
    }

    public AreaTrabajoFacade getEjbFacade() {
        return ejbFacade;
    }

    public void setEjbFacade(AreaTrabajoFacade ejbFacade) {
        this.ejbFacade = ejbFacade;
    }

    public AreaTrabajo getArea() {
        return area;
    }

    public void setArea(AreaTrabajo area) {
        this.area = area;
    }

    
}
